

"""
utils/yaml_utils.py
涉及python自带函数
isinstance(data,dict)——-————判断数据是否为该类型
for key,value in data.items(): ——————字典独有的
str(value)———————————————————将各种值转换为字符串
eval(str(value))————————eval()里只能是字符串格式，但若字符串里有表达式/函数，会自动运行输出，如eval('1+2')————3，是个int
str(value).index('$') 字符串的索引/下标，运行完是int,字符串的下标从0开始数，所以字符串的长度=字符串最后一个下标数字+1
str(value)[start+1:end] 字符串的切片就是通过索引（索引：索引：步长）截取字符串的一段，形成新的字符串（取出来的原则就是顾头不顾腚,所以想取出来的时候去掉头就需要在开始的索引+1）。
len(str)——————获得字符串的长度数字
random.randint(10, 100)
"""
import random


def func_yaml(data):
    if isinstance(data,dict):
        for key,value in data.items():
            if '${' and '}' in str(value):
                start = str(value).index('$')
                end = str(value).index('}')
                func_name = str(value)[start+2:end]
                data[key] = str(value)[0:start]+str(eval(func_name))+ str(value)[end+1:len(str(value))]
                print(len(str(value)))
    return data
"""
安装Faker库 
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Faker
可以生成各种各样的伪造数据，如：姓名、身份证、手机号、银行卡
"""
from faker import Faker

fake = Faker(locale="zh-CN")
def random_name():
    return fake.name()

def age():
    return random.randint(10, 100)

if __name__ == '__main__':
    data = {'name': '上海-${random_name()}-测试', 'age':'${age()}', 'sex': '男'}
    print(func_yaml(data))
    